package cn.tedu.single;
/*本类用于测试单例设计模式1--饿汉式*/
public class Singleton1 {
public static void main(String[] args) {
    //6.通过类名调用getSing（）方法获取本类对象
    Mysingle single1 = Mysingle.getSingle();
    Mysingle single2 = Mysingle.getSingle();

    //7.测试获取到的这两个引用类型变量是否相等
    System.out.println(single1==single2);//true，==比较的是地址值，说明是同一个对象
}
}
//0.创建自己的单例程序
class Mysingle{
    //1.提供构造方法，并将构造方法私有化
    /*1.构造方法私有化的目的：为了不让外界随意实例化/new本类对象*/
    private Mysingle(){  }
    /*3.思考：构造方法和对象私有化后，通过公共的访问点来获取对象，那外界如何调用这个公共方法呢？
    * 之前我们都是在外部创建本类对象并进行调用，但是现在单例程序中外部无法直接创建本类对象
    * 解决方案：我们可以利用之前学习的静态的概念，将方法修饰成静态的，就可以通过类名直接调用啦
    * 注意事项：静态只能调用静态，所以静态方法中返回的对象也需用静态修饰*/
    //2.在类的内部创建本类对象，并私有化
    //5.1本资源也需要使用static修饰，因为静态方法getSing（）只能调用静态资源
    private static Mysingle single = new Mysingle();
    /*也就是以公共的方式向外界提供获取本类私有对象的方法*/
    //3.对外提供一个公共的全局访问点
    //5.用static关键字来修饰本方法，为了能让外部通过类名直接调用本方法
    static public Mysingle getSingle(){
        //4.把内部创建好的对象返回到调用位置，谁调用这个方法，谁就能拿到返回的single对象
        return single;
    }


}